The calculus of constructions